use rust_practice::array::the_employee_that_worked_on_the_longest_task::Solution;

#[test]
fn hardest_worker() {
    // 示例 1：
    // 输入：n = 10, logs = [[0,3],[2,5],[0,9],[1,15]]
    // 输出：1
    // 解释：
    // 任务 0 于时刻 0 开始，且在时刻 3 结束，共计 3 个单位时间。
    // 任务 1 于时刻 3 开始，且在时刻 5 结束，共计 2 个单位时间。
    // 任务 2 于时刻 5 开始，且在时刻 9 结束，共计 4 个单位时间。
    // 任务 3 于时刻 9 开始，且在时刻 15 结束，共计 6 个单位时间。
    // 时间最长的任务是任务 3 ，而 id 为 1 的员工是处理此任务的员工，所以返回 1 。
    let n = 10;
    let logs = vec![vec![0, 3], vec![2, 5], vec![0, 9], vec![1, 15]];
    assert_eq!(Solution::hardest_worker(n, logs), 1);

    // 示例 2：
    // 输入：n = 26, logs = [[1,1],[3,7],[2,12],[7,17]]
    // 输出：3
    // 解释：
    // 任务 0 于时刻 0 开始，且在时刻 1 结束，共计 1 个单位时间。
    // 任务 1 于时刻 1 开始，且在时刻 7 结束，共计 6 个单位时间。
    // 任务 2 于时刻 7 开始，且在时刻 12 结束，共计 5 个单位时间。
    // 任务 3 于时刻 12 开始，且在时刻 17 结束，共计 5 个单位时间。
    // 时间最长的任务是任务 1 ，而 id 为 3 的员工是处理此任务的员工，所以返回 3 。
    let n = 26;
    let logs = vec![vec![1, 1], vec![3, 7], vec![2, 12], vec![7, 17]];
    assert_eq!(Solution::hardest_worker(n, logs), 3);

    // 示例 3：
    // 输入：n = 2, logs = [[0,10],[1,20]]
    // 输出：0
    // 解释：
    // 任务 0 于时刻 0 开始，且在时刻 10 结束，共计 10 个单位时间。
    // 任务 1 于时刻 10 开始，且在时刻 20 结束，共计 10 个单位时间。
    // 时间最长的任务是任务 0 和 1 ，处理这两个任务的员工的 id 分别是 0 和 1 ，所以返回最小的 0 。
    let n = 2;
    let logs = vec![vec![0, 10], vec![1, 20]];
    assert_eq!(Solution::hardest_worker(n, logs), 0);
}
